package org.example;


import java.util.HashSet;
import java.util.Set;

public class Solution1 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * @param x    int整型 制作莫比乌斯环的带子长度
     * @param n    int整型 A每次移动的距离
     * @param m    int整型 B每次移动的距离
     * @param time int整型 第几次相遇
     * @return int整型
     */
    public static int getMeetDistance(int x, int n, int m, int time) {
        //用相对运动看,距离原点的距离是0 ~ 2x-1
        //运动次数
        int c = 0;
        int nm = n + m;
        //相遇次数
        int t = 0;
        //距离
        int dis = 0;
        Set<Integer> dSet = new HashSet<>();
        while (true) {
            c++;
            dis = (dis + nm) % (2 * x);
            t += dis == x ? 1 : 0;
            if (t == 0 && dSet.contains(dis)) {
                return -1;
            }
            dSet.add(dis);
            if (t == time) {
                int re = (n * c) % x;
                return Math.min(re, x - re);
            }
        }

    }

    public static void main(String[] args) {
        System.out.println(getMeetDistance(10, 2, 3, 1));
    }
}